﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Data.SqlClient;
namespace webnew.BLL
{
    public class Sys_Company
    {       
        private readonly webnew.DAL.Sys_CompanyHelper dal = new webnew.DAL.Sys_CompanyHelper();
        public Sys_Company()
		{ }

        /// <summary>
		/// 增加一条数据
		/// </summary>
        public int Add(webnew.Model.Sys_CompanyInfo model)
        {
            CheckModel(model);
            return dal.Add(model);
        }

        /// <summary>
		/// 更新一条数据
		/// </summary>
        public int Update(webnew.Model.Sys_CompanyInfo model)
        {
            CheckModel(model);
            return dal.Modify(model);
        }

        /// <summary>
        /// 根据ID删除一条数据
        /// </summary>
        public int del(string id)
        {          
            return dal.Del(id);
        } 

        /// <summary>
		/// 获得泛型数据列表（存在的所有数据）
		/// </summary>
        public List<webnew.Model.Sys_CompanyInfo> GetList()
        {
            return dal.GetList();
        }

        /// <summary>
        /// 根据条件获得泛型数据列表
        /// </summary>
        public List<webnew.Model.Sys_CompanyInfo> GetconList(string condition)
        {
            return dal.GetconList(condition);
        }
      

       /// <summary>
       /// 根据用户ID返回一个实体
       /// </summary>
        public webnew.Model.Sys_CompanyInfo GetList(string EmployeeID)
        {
            return dal.GetModel(EmployeeID);
        }

        /// <summary>
        /// 取得数据行数,不建议直接使用此方法,请根据业务逻辑重写
        /// </summary>
        public int GetCount(string tablename,string condition)
        {
            return dal.GetCount(tablename,condition);
        }

        /// <summary>
		/// 分页获取泛型数据列表,不建议直接使用此方法,请根据业务逻辑重写
		/// </summary>
        public SqlDataReader GetPageList(string field,string condition, int pageSize, int pageIndex, string tbNames, string sortNames, bool sortType)
        {
            if (pageSize <= 0)
                throw new Exception("每页数据条数必须大于0。");

            if (pageIndex <= 0)
                throw new Exception("页索引必须大于0。");

            if (string.IsNullOrEmpty(sortNames))
                throw new Exception("排序字段不能为空。如果是默认排序，可以填写主键字段。");
            return dal.GetPageList(field,condition, pageSize, pageIndex, tbNames, sortNames, sortType);
        }

		#region 验证参数的有效性，请在此加入更多业务逻辑的验证

        /// <summary>
        /// 验证实体的有效性
        /// </summary>
        private void CheckModel(webnew.Model.Sys_CompanyInfo model)
        {
        //    if (model == null)
        //        throw new ArgumentNullException("参数不能为空。");

        //    if (!Regex.IsMatch(model.compname, @"^[\s\w\u4e00-\u9fa5]{1,50}$"))
        //        throw new ArgumentException("Name格式不正确。");
        }

        private void CheckConditionArgument(int ID)
        {
        }
        #endregion

        ///////////////////////////业务方法/////////////////////////////
        /// <summary>
        /// 获取OA单位
        /// </summary>
        public List<Model.Sys_CompanyInfo> GetOACompany()
        {
            return dal.GetOACompany();
        }

        /// <summary>
        /// 获取HR单位
        /// </summary>
        public List<Model.Sys_CompanyInfo> GetHRCompany()
        {

            return dal.GetHRCompany();
        }

        /// <summary>
        /// 根据ID获取一个实体
        /// </summary>
        public Model.Sys_CompanyInfo GetModel(string id)
        {
            return dal.GetModel(id);
        }
    

           
        /// <summary>
        /// 根据选中的公司ID,判断是否能删除
        /// </summary>
        /// <param name="CompIds">选中的公司ID</param>
        /// <returns>返回false 表示不能删除;返回true 表示可以删除</returns>
        public bool isCanDel(string CompIds)
        {
            return dal.isCanDel(CompIds);
        }

        /// <summary>
        /// 根据用户表ID获取所在的单位ID
        /// </summary>
        /// <param name="userID"></param>
        /// <returns></returns>
        public string GetCompIDByUserID(string userID)
        {
            return dal.GetCompIDByUserID(userID);
        }
        /// <summary>
        /// 根据公司名获取公司数据
        /// </summary>
        /// <param name="CompName">公司名</param>
        /// <returns>公司ID</returns>
        public Model.Sys_CompanyInfo GetCompId(string CompName)
        {
            return dal.GetCompId(CompName);
        }

       

        /// <summary>
        /// 根据公司名称获取公司ID
        /// </summary>
        /// <param name="CompName">公司名称</param>
        /// <returns>公司ID</returns>
        public string GetCompanyId(string CompName)
        {
            return dal.GetCompanyId(CompName);
        }


        /// <summary>
        /// 根据OA公司名获取一个实体
        /// </summary>
        public Model.Sys_CompanyInfo GetOAModel(string strCompName)
        {
            return dal.GetOAModel(strCompName);
        }
        ///<summary>
        /// 根据公司Id获取公司名称
        /// </summary>
        /// <param name="CompId">公司Id</param>
        /// <returns>公司名称</returns>
        public string GetCompName(string CompId)
        {
            return dal.GetCompName(CompId);
        }

        ///<summary>
        /// 根据公司ERPCode获取公司名称
        /// </summary>
        /// <param name="CompId">公司Id</param>
        /// <returns>公司名称</returns>
        public string GetCompNameByERPCode(string ERPCode)
        {
            return dal.GetCompNameByERPCode(ERPCode);
        }
        public string GetErpCodebyCompId(string CompId)
        {
            return dal.GetErpCodebyCompId(CompId);
        }

        //////////////////////new//////////////////////////
        /// <summary>
        /// 获取所有级别单位列表
        /// </summary>
        public List<Model.Sys_CompanyInfo> GetAllCompany()
        {
            return dal.GetAllCompany();
        }


        /// <summary>
        /// 获取指定级别单位列表(一级,二级)
        /// </summary>
        public List<Model.Sys_CompanyInfo> GetLevelCompany(string strLevel)
        {
            return dal.GetLevelCompany(strLevel);
        }

        /// <summary>
        /// 根据输入的单位名,单位级别 查找数据库是否存在该单位名
        /// </summary>
        /// <param name="CompName">输入的单位名</param>
        /// <param name="strLevel">单位级别</param>
        /// <returns>返回string "1"代表存在,"0"代表不存在</returns>
        public string ExistCompName(string CompName, string strLevel)
        {
            return dal.ExistCompName(CompName, strLevel);
        }

        /// <summary>
        /// 根据输入的ERP代码,单位级别 查找数据库是否存在该ERP代码
        /// </summary>
        /// <param name="CompName">输入的单位名</param>
        /// <param name="strLevel">单位级别</param>
        /// <returns>返回string "1"代表存在,"0"代表不存在</returns>
        public string ExistERPCode(string ERPCode, string strLevel)
        {
            return dal.ExistCompName(ERPCode, strLevel);

        }

        /// <summary>
        /// 根据单位ID 获取该单位下级单位
        /// </summary>
        /// <param name="CompName">公司名称</param>
        /// <returns>公司ID</returns>
        public List<Model.Sys_CompanyInfo> GetNextCompany(string CompId)
        {
            return dal.GetNextCompany(CompId);
        }

        /// <summary>
        /// 获取所有油库单位列表(既二级，三级单位)
        /// </summary>
        public List<Model.Sys_CompanyInfo> GetALLYouKu()
        {
            return dal.GetALLYouKu();
        }
        /// <summary>
        /// 获取所有油库单位列表(既二级，三级单位)
        /// </summary>
        public List<Model.Sys_CompanyInfo> GetALLYouKu(bool bo)
        {
            return dal.GetALLYouKu(bo);
        }
        public string GetShortCompName(string CompId)
        {
            return dal.GetShortCompName(CompId);
        }
    }
}
